title: “A Minimal Book Example” author: “John Doe” date: “2023-07-12” site: bookdown::bookdown_site documentclass: book bibliography: [book.bib, packages.bib] # url: your book url like https://bookdown.org/yihui/bookdown # cover-image: path to the social sharing image like images/cover.jpg description: | This is a minimal example of using the bookdown package to write a book. The HTML output format for this example is bookdown::gitbook, set in the _output.yml file. link-citations: yes github-repo: rstudio/bookdown-demo
Lugar: Universidad Nacional de San Antonio Abad del Cusco, Perú Fecha del taller: 24-26 Noviembre 2023
Dr. Raymond L. Tremblay:
Universidad de Puerto Rico Presidente de Analítica Fundación, Inc
e-mail:
Dra. Nhora Helena Ospina-Calderón:
Pontificia Universidad Javeriana Seccional Cali Profesora-investigadora
e-mail:
Tres días con 26 horas totales de Taller-teórico practico con una experiencia de recolección de datos en el campo (8 horas) y dos días de taller–teórico practico y análisis datos (14 horas). Instrucción en español.
Universidad Nacional San Antonio Abad del Cusco (UNSAAC)
ANALITICA Fundación Inc. (Puerto Rico)
S/. xxx.00 nuevos soles ($ 100.00 dol.) locales.
Profesionales: S/. xxx.00 nuevos soles ($200.00 dol.) Estudiantes internacional y profesionales
Este taller teórico-práctico se ofrece a los estudiantes interesados en orquídeas y a las personas interesadas en la conservación de plantas. Los métodos se enfocarán en el uso de las matrices de Lefkovitch para construir modelos de historia de vida que sirven a su vez para evaluar si una población de una especie es estable, está creciendo o se está reduciendo. Para evaluar el crecimiento de las poblaciones se utiliza el método de marcar y recapturar (monitorear) individuos en el campo, dicho método se aplicará para hacer Matrices de Proyección de Poblaciones (MPP). Se dará énfasis en el manejo para el almacenamiento y sistematización de datos. Los datos recolectados en el campo serán utilizados para construir una base de datos que almacene las evidencias recogidas en el campo y funcione como insumo para calcular las matrices de transiciones. Posterior a la construcción de matrices de transición se analizará las tasas de crecimiento (crecimiento poblacional intrínseco), estimando los errores y los intervalos de confianza con distribución beta para cada una de las transiciones. También se llevará a cabo análisis de elasticidad y la proyección del tamaño de la población. Todos los análisis serán preparados y llevados a cabo en R, Rstudio y RMarkdown (todos programas de distribución libre).
Introducir las bases teóricas y prácticas para la recolección de datos de campo que permiten determinar la probabilidad de extinción de una población.
• Conocer las bases teóricas y los métodos modernos de recolección de datos en el campo para determinar la probabilidad de extinción de una población.
• Conocer los datos básicos y su correcta manipulación para determinar
la viabilidad de una población.
• Manipular correctamente los archivos electrónicos de datos de campo para proponer la estructura de la población y su posterior depuración para análisis sobre diferentes formatos.
• Aprender nociones básicas de Excel, R y RStudio para editar y analizar conjuntos de datos para el uso con análisis de MPP.
• Construir un gráfico de ciclo de vida para la especie estudiada.
• Construir modelos demográficos que permitan predecir la dinámica poblacional en el tiempo y generar insumos importantes para el manejo y la conservación
• Estimar los intervalos de confianza de los parámetros del ciclo de vida de la población.
• Utilizar la información y análisis demográfico para el diagnóstico y predicciones de la viabilidad de las poblaciones.
• Modelar el tamaño poblacional de la población de estudio para determinar su posible riesgo de extinción
23 noviembre- Llegada a Cusco
8:00 pm- 9:15pm
24 noviembre: Viaje de campo
Salida 6:00 am - Llegada 8:15 am.
8:30am- 5:00pm.
- Determinación de la especie a estudiar (Ospina y Tremblay)
- Métodos de recolección de datos - Recolección de datos (Capítulo 4 y 22; Ospina y Tremblay)
25 noviembre:
8:30 pm-10:30 pm
10:30am – 12:00pm
Almuerzo 12:00- 1:00pm
1:00pm - 2:30 pm
2:30pm – 5:30pm
Introducción a R, RStudio y RMarkdown y paquetes de análisis. (Tremblay)
Subir los datos a RStudio, análisis preliminar de los datos usando popdemo y raretrans (Ospina y Tremblay)
26 noviembre:
8:30 pm-10:30 pm
10:30am – 12:00pm
Dinamica transitoria/ *transfer function* (Capítulo 12; Ospina)
Dinámica, análisis de viabilidad poblacional: el futuro de la especie (Capítulo 9: Tremblay)
Almuerzo 12:00- 1:00pm
1:00pm – 4:30pm
4:30pm – 5:30pm
Gascoigne Samuel J. L., Simon Rolph, Daisy Sankey, Nagalakshmi Nidadavolu, Adrian S. Stell Pičman, Christina M. Hernández, Matthew Philpott, Aiyla Salam, Connor Bernard, Erola Fenollosa, Jessie McLean, Shathuki Hetti Achchige Perera, Oliver G. Spacey, Maja Kajin, Anna C. Vinton, C. Ruth Archer, Jean H. Burns, Danielle L. Buss, Hal Caswell, Judy P. Che-Castaldo, Dylan Z. Childs, Pol Capdevila, Aldo Compagnoni, Elizabeth Crone, Thomas H. G. Ezard, Dave Hodgson, Owen Jones, Eelke Jongejans Jenni McDonald, Brigitte Tenhumberg, Chelsea C. Thomas, Andrew J. Tyre, Satu Ramula, Iain Stott, Raymond L. Tremblay, Phil Wilson, James W. Vaupel, and Roberto Salguero-Gómez.. 2023. A standard protocol to report discrete stage-structured demographic information. Submitted to Methods in Ecology and Evolution. In press.
Stott, I., Hodgson, D. J., & Townley, S. (2012). Beyond sensitivity: nonlinear perturbation analysis of transient dynamics. Methods in Ecology and Evolution. 3(4), 673-684. doi: 10.1111/j.2041-210X.2012.00199.x
Stott, I., Hodgson, D. J., & Townley, S. (2012b). Popdemo: An R package for population demography using projection matrix analysis. Methods in Ecology and Evolution, 3(5), 797-802. https://doi.org/10.1111/j.2041-210X.2012.00222.x
Stott, I., Townley, S., & Hodgson, D. J. (2011). A framework for studying transient dynamics of population projection matrix models. Ecology Letters, 14(9), 959-970. doi: 10.1111/j.1461-0248.2011.01659.x
Tremblay, R. L., & Hutchings, M. J. (2002). Population dynamics in orchid conservation: a review of analytical methods based on the rare species Lepanthes eltoroensis. Orchid conservation. Kota Kinabalu: Natural History Publications (Borneo), 183-204.
Tremblay, R. L., Raventos, J., & Ackerman, J. D. (2015). When stable-stage equilibrium is unlikely: integrating transient population dynamics improves asymptotic methods. Annals of Botany, 116(3), 381-390. doi:10.1093/aob/mcv031
Tremblay, R. L., Tyre, A. J., Pérez, M. E., & Ackerman, J. D. (2021). Population projections from holey matrices: Using prior information to estimate rare transition events. Ecological Modelling, 447, 109526. https://doi.org/10.1016/j.ecolmodel.2021.109526.
Que conocemos de estas especies?
Especies reportadas de trabajo
Cyrtochilum cimiciferum (Rchb.f.) Dalström (Tiene una gran poblacion )
Cyrtochilum myanthum (Lindl.) Kraenzl.1917
Epidendrum chalmersii Hágsater & Ric. Fernández 2013 (endémico de la región Cusco)
Epidendrum syringothyrsus Rchb.f. ex Hook.f. 1875
Pleurothallis casapensis Lindl. 1842
Habenaria sp.
Cyclopogon sp.
Por: Por RLT, Nhora Ospina, Demetria y Anne …..
El objetivo de la conservación biológica es asegurar que las especies
pueden sobrevivir, reproducirse y dejar progenie viable para de una
generación a otra. Por consecuencia se necesita que las variables
intrinsicas y extrinsicas, bioticas y abioticas de cada especies estén
considerado con todas sus interacciones. Naturalmente aunque el concepto
es sencillo, tomar en cuanta TODAS las posibles interacciones biológicas
y abióticas es imposible.
El primer paso a la conservación es considerar el ambiente adecuado para
cada especie. Sin duda en los ultimos 50 años en muchos paises ha habido
un cambio grande en el repesto y la conservaciones de bosque, pradera,
desierto y todos los biomas en general. Por ejemplo el cambio de
cobertura de bosque en Puerto Rico ha aumentado de circa de 2-5% en los
años 1910 a más 40% en el 2000 (Parés-Ramos, Gould, and Aide
2008). En general en Latino América ha habido más
reforestación de deforestación (Aide et al. 2013) en los
ultimos años, aunque varia mucho entre paises y periodo de tiempo. Para
la conservación el primer paso era reconocer que los habitat necesitan
ser protegido.
Muchos de estos nuevos hábitat son bosque segundarios, fragmentados y
dominado por especies introducidas. Estos habitat por consecuencia son
mayormente diferentes al ambiente natural antes de los cambios
antropogénicos. El resultado, en muchas ocasiones, es que la especies de
interes están reducida en números de individuos o fragmentados.
Considerando esos remanentes de individuos en el habitat, son suficiente
para mantener una población viable? ¿Como que uno decide que una
población es viable?
En general, el conceptos de conservación es que si uno proteje los habitat las especies estarán conservadas. Pero lo que no es obvio es que la presencia de muchos individuos no es suficiente para asegurar la supervivencia de una especies a largo tiempo. Un ejemplo bien conocida es la extincción del Dodo en la isla de Mauritius y la casi extinción de una especies de arbol en la familia Sapotaceae, Calvaria major. Para que la semillas sean viable necesitan pasar por el tracto digestivo de un pajaro para remover el encocarpo persitente de la semilla que causa “dormancy” en las semillas (Temple 1977). Por consecuencia nunca se puede asumir que la presencia de una especies sin tomar en cuenta las interacciones bióticas y abióticas es suficiente para sugerir que no hay riesgo de extincción.
La dinámica poblacional tiene como meta tomar en cuenta todas las etapas/edades de una especies y evaluar cual de esas etapas/edades tiene impacto sobre la supervivencia de la especies. Esas etapas de vida debería considerar las interaciones con sus ambiente biotico y abiotico. La dinamica de población es fundamental en todas las areas de la ecología y evolución. Comprender la dinamica poblacional es la clave para entender la importancia relativa al aceso de los recursos y el efecto de competencia, herbivoria y depredaciones sobre la viablidad de especies. Tradicionalmente los estudios estaban enfocado a evaluar la tabla de vida para el manejo y conservaciones de especies particulares (ref). En años más recientes los estudios se han diversificado para evaluar la interacciones entre especies y su ambiente (ref).
Una definición más especifica de los estudios de dinámica poblacional son definidos como los análisis de los factores que afecten el crecimiento, estabilidad y reducción en el tamaño de la población en una serie de tiempo.
Por ejemplo, la dinamica poblacional de especies invasivas incluye un periodo de crecimiento muy lento al comienzo de la colonización de un nuevo sitio y frecuentamente siguido de un crecimiento logarithmico. La figura @ref(fig:Pop-fig). demuestra el cambio de número de individuos en el tiempo de una especie hipotética.
ggplot(pressure, aes(temperature, pressure))+
geom_point()+
rlt_theme+
xlab("Tiempo")+
ylab("Tamaño poblacional")
Cambio poblacional en tiempo
Determinar el tamaño poblacional en el futuro tiene muchos usos. Se puede dividir sus usos en tres grupos grandes, entender las 1) interacciones ecológicas, 2) manejo y conservaciones o 3) los procesos evolutivos. Los estudios enfocado a la conservación se engloba dentro de un acercamiento de la viablidad de poblaciones. En este libro estaremos dando una introducción a cada uno de estas vertientes, pero nuestros ejemplos son una introducción al tema y no una profundización extensa de cada uno. En la table @ref(USO) vemos algunos de los usos especificos que se ha dado con la metodología de PPM.
NOTA IMPORTANTE: Evaluar las referencias y añadir referencias tradicionales y recientes
| Categoria de Uso | Uso especifico | Referencias | Referencias con Oquideas |
|---|---|---|---|
| Manejo | Identificar las etapas or procesos demograficos claves | (Crouse, Crowder, and Caswell 1987) | ? |
| Determinar cuantos individuos en una población es necesario para reducir la extinción | Shaffer 1981 Armbruster & Lande 1993 | ? | |
| Determinar cuantos individuos se necesita introducir en una sitio para establecer una población viable | Bustamante 1996 | ? | |
| Determinar cuantos individuos se puede extraer si tener un impacto negativo sobre la viabilidad de una población | Nantel et al. 1996 | ? | |
| En especies invasivas determinar cuantos y cual etapas se necesita remover para controlar la población | ? | ? | |
| Determinar cuantas pobalciones se necesita para la viabilidad de una especie al nivel local o global | Lindenmayer & Possingham 1996 | ||
| Evaluación de riesgos | Evaluar el riesgo de una población | Samson 1985 | muchos |
| Comparando el riesgo relativo de dos o más poblaciones | Allendrof et al. 1997 | ? | |
| Interacciones ecologicas | Evaluar interacciones ecológicas para entender las variables importantes para la supervivencia de una población | ? | Ospina et al., 2022 |
| Procesos y patrones evolutivos | Cual de los procesos y patrones evolutivos del ciclo de vida de especies impacta su crecimiento | ? | ? |
Identificar y conocer cuales son las etapas de vida más suceptibles a cambios abioticos y bioticos y su impacto sobre la persistencia de una población es necesario para el manejo. El ejemplo clásico en la literatura usando PPM son los trabajos sobre la dinámica poblacional de la tortuga “boba” o “cabezona” Caretta caretta (Crouse, Crowder, and Caswell 1987), (Crowder et al. 1994). Crouse y Crowder demostrarón que aun salvando TODOS los huevos de depredación, esa estrategia de manejo antropogenico iba a tener muy poco impacto en el crecimiento de la población. Lo que econtrarón es que el impacto más grande sobre el crecimiento poblacional provendría de proteger los adultos de las redes de pesca, modificando estas para que las tortugas se pueden escapar y no ahogarse en las redes. Los trabajos de Crouse y Crowder fueron pioneros en demostrar que uno podía simular diferentes escenarios basado en la historia de vida y evaluar su impacto.
Ejemplo de orquidea AQUI
El efecto de tamaño poblacional sobre la biología y la probabilidad de extincción es amplia (Shaffer and Samson 1985), (Nunney and Campbell 1993), (Harris et al. 2022). ¿Cual es la probablidad de extincción de una población considerando la cantidad de individuos en cada etapa? En general lo que se observa es que menor el tamaño poblacional, N, mayor es el riesgo de extincción. Esa probabilidad de extincción puede variar si algunas etapas del ciclo de vida tiene es muy reducido o su probabilidad de sobrevivir o crecer varia. Consideramos por ejemplo en las orquídeas donde la probabilidad de que las semillas se establece, germina y crezca a a ser un juvenil es muy pequeña. Por consecuencia una nueva población de orquidea necesita considerar la cantidad de individuos que este presente pero tambien la probabilidad de tener semillas y que estas pueden crecer a ser adultos reproducible.
Naturalmente, más cantidad de individuos re-introducido en un sitio mayor sera la probabilidad que la población sea viable. Pero, como todo hay un limite de tiempo y esfuerzo disponible. Por consecuencia la pregunta debería ser orientado a determinar cual es el minimo de individuos que se deberia introductir para garantizar un x porciento de suceso en el establecimiento de una nueva población.
En los ultimos años, muchas organizaciones y cientificos han comenzado a hacer re-introducción de especies en su habitat nativo y no. (ref). Algunos programa introduce especies en areas urbanas.
Hay tres razones principales para la extracción de individuos de su ambiente natural.
El supuesto de colectores de orquidea de su habitat naturales, tanto para la conservación de Ex situ y el uso para la propagación es que el impacto es minimo, y no tendrá impacto a largo plazo para la supervivencia. Regresaremos sobre este punto más tarde. La historia de fanatisismo de recolección de orquideas para la venta es bien conocida ref(). Aun que uno quisiera pensar que estas extracciones son del pasado y no occuren hoy en dia, hay todavia escrupulos que extraen los plantas sin pensar al impacto que tendrá sobre la población o especie.
Pero la pregunta se tiene que hacer. Cuantos individuos y de que etapas se puede extraer de la población sin tener impacto en el crecimoento poblacional?
Dinamica de metapoblaciones.
Por: Nhora Ospina
Escribo algo
Tengo mucho texto que ampliar
library(Rage)
# hidden code to produce figures
library(DiagrammeR)
matA <- rbind(
c(0.0, 0.0, 3.2),
c(0.5, 0.3, 0.8),
c(0.0, 0.4, 0.9)
)
stages <- c("seedling", "rosette", "flowering")
title <- NULL
graph <- expand.grid(to = stages, from = stages)
graph$trans <- round(c(matA), 3)
graph <- graph[graph$trans > 0, ]
nodes <- paste(paste0("'", stages, "'"), collapse = "; ")
graph$min_len <- (as.numeric(graph$to) - as.numeric(graph$from)) * 3
graph$col <- c(
"PaleGreen4", "PaleGreen4", "PaleGreen4", "Goldenrod1",
"MediumOrchid4", "PaleGreen4"
)
edges <- paste0("'", graph$from, "'", " -> ", "'", graph$to, "'",
"[minlen=", graph$min_len,
",fontsize=", 10,
",color=", graph$col,
",xlabel=", paste("\"", graph$trans),
"\"]\n",
collapse = ""
)
grViz(
paste(
"
digraph {
{
graph[overlap=false];
rank=same;
node [shape=", "egg", ", fontsize=", 12, "];",
nodes, "
}",
"ordering=out
x [style=invis]
x -> {", nodes, "} [style=invis]", edges,
"labelloc=\"t\";
label=\"", title, "\"
}"
)
)
plot_life_cycle(matA, stages=stages, fontsize = 0)
Por: Raymond L. Tremblay y Aucencia
Para cualquier studio usando el acercamiento de dinamica poblacional es necesario conocer lo básico de la especie de interes y las etapas/edades que corresponde al ciclo de vida de esa misma. Poder reconocer las semillas, plántulas, juveniles y adultos y si hay etapas latentes. Algunos retos en en el estudio de las orquideas es el siguimiento de las semillas y plántulas en el campo. La dispersión de las semillas en espacio ha sido estudiado muy poco ( Sabat. et al. ) debido a sus tamaños tan pequeños y dificultad de seguir en el espacio. Los métodos de seguir las semillas en su ambiente natural incluye tipicamente ponerlos en una malla y ponerlos en el suelo o la corteza y recogerlos más tarde para ver si estas germinaron (ref).
Identificar plántulas en orquídeas terrestres tiende también a ser muy complidado, ya que están escondidas entre vegetación o cubierta de tierra. La orquideas epitifas, en ciertas especies se puede identificar las plántulas (si no están cubierta de musgo o otra vegetación), pero distinguir entre plántuls de diferentes especies puede ser imposible. Por ejemplo distinguir las plántulas de diferentes especies de Lepanthes en el mismo forofito no es posible (Tremblay comunicación personal). El método de identificar a que especie pertenece fue de seguir estos individuos a las otras etapas (junenil o adulto). Por ejemplo la forma de crecimiento del tallo es diferente entre Lepanthes eltoroensis (prostate) versus Lepanthes woodburyana (erect). Por consecuencia idividuos que no sobreviven a la próxima etapa no se sabe a que especie pertenece.
Los calidad de los métodos de marcar plantas en el campo para evaluación posterior es primordial para los análisis de dinámica poblacional. Como se marca y cual es la calidad del marcador para detectar y re-evaluar los individuos en años subsiguiente afecta la calidad de los datos. Si los marcadores individuales se pierden y no se reconoce ese problema, los individuos perdidos por marca no permanente se podría categorizar como muerto, y ese individuo no marcado (por haber perdido su identificación) pudiese ser interpretado como un nuevo individuo (reclutamiento). Eso resulta en aumento en mortandad y reclutamiento, sesgando los resultados. Naturalmente, ese sesgo depende de la frecuencia proporcional al tamaño de muestra, menor el tamaño de muestra mayor el sesgo.
El marcados tiene que ser permanente (plástico, metal, etc.) y fácil de encontrar en adición de ser informativo y único para cada planta y reducir las incertidumbres. La dificultad muchas veces proviene de individuos donde los datos son recopilados con numeración similares. Esos problemas muchas veces encuentra años después cuando se quiere re-evaluar los datos y no hay manera aclarar las dudas.
Cada planta tiene que tener si propia identificación y que no haya confusión con otros individuos de esa misma población o de otra población.
Por ejemplo si el estudio comenzó en 2023 y solamente hay una población. Los individuos podrían tener una codificación siguiente 23001, 23002, 23003, … 23152 para los 152 individuos encontrado y marcado ese año. El siguiente año se muestra esos individuos y nuevos individuos encontrado comenzarían con 24153. De esta forma ya se conoce cuando fue el primer año de muestreo del individuo y esos nuevos individuos no se confunde con los del año anterior. Cada año comenzaría con identificación del año, y la numeración de los individuos no se repiten en la misma población. Entonces hay redundandia en la codificación ayudando a reducir los errores de codificaciones.
Siguiendo con el mismo concepto pero múltiples poblaciones, la numeración de la población pudiese utilizar una codificación alfa numérica, donde la letra del alfabeto representa la población y la número los individuos. Siguiera así A23001, A23002,…, 23xxx para la primera población y B23001, B23002,…, B23xxx para las segunda población.
Para relocalizar los individuos se puede utilizar marcador permanentes o geo-referencias individuales para cada planta.
Métodos de relocalizar los individuos en el campo puede ser complicado.
Necesitamos unos ejemplos
Si el sitio esta bien protegido y no hay riesgos de atraer atención a las plantas se puede usar pequeñas banderas para facilitar la recaptura de las plantas.
NOTA importante: los “tags” no deberían ser facil de ver en el habitat ya que podría atraer atención al estudio y hay mucha gente que se llevan plantas del campo, incluyendo plantas que son partes de estudios.
La base de los estudios de dinamica poblacional es evaluar las transiciones entre las etapas de vida incluyendo mortantad y su reprodución. La información que se recoge del campo tiene que ser facil de recoger y consistente y sin error. Si seguimos ejemplos de los trabajos de campo de Tremblay [ref] con Lepanthes, las etapas incluidas son plantulas, juveniles, adultos no reproductivos y adultos reproductivos. Cada una de estas estapas estan definida especificamente para ese genero.
Dependiendo de los estudios pudiese haber más etapas, por ejemplo Tremblay [ ] uso dos etapas de individuos reproductivos.
Otro ejemplo es el estudio de Hernández-Apolinar con la especie xx. donde incluyo…..
Determinar cuantas categoria deberia ser utilizados y cuales es muy dinamica y depende de la especies, número individuos y las preguntas de interes.
Las variables a recoger tiene que incluir el minimo las siguientes
Otras variables que pudiese recoger incluye
el tamaño de las hojas o la hoja más grande
el número de pseudobulbo
la altura de la inflorescencia
la altura en el árbol de las epífitas
el número de “ramet”, un indice del tamaño del genotipo en plantas con crecimiento horizontal
indicadores de herbivoria sobre la planta
indicadores de la cantidad plagas sobre la planta como “rust”
Por: RLT
El objetivo de este capítulo es demostrar algunos de los retos cuando uno trabaja con especies raras o con poca información para estimar los parametros de la matrices y como se puede resolver y estimar parametros más realista.
Considera este primer ejemplo donde se estima que la especie de interes tenga tres etapas en su ciclo de vida (semillas, plantulas y adultos) y que solamente la etapa más grande (de adultez) puede producir semillas.
Cuando se comienza un analisis de dinamica poblacional el primer paso es evaluar y tratar de ver cual son las etapas del ciclo de vida que pudiesen ser representativo de la dinamica principal de la especie.
En esta primera figura vemos lo que se considerá que ocurre en esa especie hipotetica.
library(Rage)
Ahora ud recoge los datos del campo y evalua las transiciones y fecundidad y tiene información siguiente.
Aqui se ve dos de los problemas que resulta en PPM que no son realista, uno que no hay ninguna mortantad o que todo se muere. El otro componente es el efecto del tamaño de muestra, considerá que su especie de interes Ud tuvo acceso solamente a 4 plantas adultas (un especies rara), y 4 de los 4 sobrevieron, por consecuencia 100% de supervivencia. Si los individuos llegan a esta etapa son inmortales!!!? Claramente es un resultado del tamaño de muestra y no del ciclo de vida de la especie.
El paquete raretrans ayuda en resolver estos asuntos illogicos y crear matrices que son más entre realistas al ciclo de vida de su especie.
# hidden code to produce figures
library(DiagrammeR)
matA <- rbind(
c(0.0, 0.0, 0.0),
c(1.0, 0.0, 0.0),
c(0.0, 0.0, 0.9)
)
stages <- c("semillas", "plantulas", "adultos")
title <- NULL
plot_life_cycle(matA, stages=stages)
La información original del uso del paquete se encuentra aqui https://doi.org/10.1016/j.ecolmodel.2021.109526.
Population projections from holey matrices: Using prior information to estimate rare transition events
Abstracto
Las matrices de proyección de población son un medio común para predecir la persistencia de la población a corto y largo plazo para especies raras, amenazadas y en peligro de extinción. Los datos de tales especies pueden sufrir de tamaños de muestra pequeños y, en consecuencia, perder eventos demográficos raros que dan como resultado trayectorias de ciclo de vida incompletas o biológicamente poco realistas. Las matrices con valores faltantes (ceros; p. ej., sin observación de semillas que se transforman en plántulas) a menudo se reparan utilizando información previa de la literatura, otras poblaciones, períodos de tiempo, otras especies, estimaciones de las mejores conjeturas o, a veces, incluso se ignoran. Para paliar este problema, proponemos usar un modelo multinomial de Dirichlet para parametrizar transiciones y un Gamma para la reproducción para parchear los valores faltantes en estas matrices perforadas. Esto integra formalmente la información previa dentro de un marco bayesiano e incluye explícitamente el peso de la información previa en las distribuciones posteriores. Mostramos utilizando dos conjuntos de datos reales que el peso asignado a la información anterior influye principalmente en la dispersión de los posteriores, la inclusión de anteriores da como resultado matrices irreducibles y ergódicas, y se pueden hacer inferencias biológicamente más realistas sobre las probabilidades de transición. Debido a que los antecedentes se establecen explícitamente, los resultados son reproducibles y se pueden volver a evaluar si hay antecedentes alternativos disponibles en el futuro.
if (!require("pacman")) install.packages("pacman")
## Loading required package: pacman
pacman::p_load(janitor, tidyverse, devtools)
library(tidyverse)
library(janitor)
#library(devtools)
#devtools::install_github("atyre2/raretrans", build = TRUE, build_opts = c("--no-resave-data", "--no-manual"))
library(raretrans)
Vea el siguiente website para más información en ingles, la información que sigue es una traducción y ampliación de la información en el siuiente enlace.
https://atyre2.github.io/raretrans/articles/onepopperiod.html
library(tidyverse)
library(ggplot2)
library(popbio) # para la función projection.matrix()
library(raretrans)
# Mi tema de ggplot2 personal
rlt_theme <- theme(axis.title.y = element_text(colour="grey20",size=15,face="bold"),
axis.text.x = element_text(colour="grey20",size=15, face="bold"),
axis.text.y = element_text(colour="grey20",size=15,face="bold"),
axis.title.x = element_text(colour="grey20",size=15,face="bold"))
El objetivo de esta viñeta es demostrar el uso del paquete
raretrans para los calculos de los parametros en una
población y periodo de transición.
raretrans asume que la matriz de proyección es una lista
de dos matrices, una matriz de transición y una matriz de fertilidad.
Este es el formato de salida de popbio::projection.matrix.
Si tenemos transiciones individuales en un marco de datos
Podemos utilizar popbio::projection.matrix para obtener
los datos necesarios. Hacemos una demostración con los datos de
transición y fertilidad de la orquídea epifita Lepanthes elto
POPNUM 250 en el periodo 5.
data("L_elto") # carga el conjunto de datos `L_elto` en memoria (incluido en el paquete `raretrans`)
head(L_elto)
## # A tibble: 6 × 13
## POPNUM year seedlings adults fertility IND_NUM stage next_stage first_year
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <dbl>
## 1 209 1 1 6 0 67 j j 1
## 2 209 1 1 6 0 68 a a 1
## 3 209 1 1 6 0 69 a a 1
## 4 209 1 1 6 0 70 a a 1
## 5 209 1 1 6 0 71 j a 1
## 6 209 1 1 6 0 72 a a 1
## # ℹ 4 more variables: last_year <dbl>, recruited <lgl>, died <dbl>,
## # lifespan <int>
Cada fila de este data.frame de datos tiene columnas para la fase actual (stage), la fase siguiente (next_stage) y la fertilidad por individuo. Tenga en cuenta que “p” significa “plantula” en español. El primer conjunto de líneas de abajo cambia el nombre de la etapa del ciclo vital de “p” a “s” después de seleccionar la población y el periodo de tiempo.
onepop <- L_elto %>%
# Filtrar la población # 250, el periodo (año=year) 5
filter(POPNUM == 250, year == 5) %>%
# redefine "p" por plantula a "s" para seedling
mutate(stage = case_when(stage == "p" ~ "s",
TRUE ~ stage),
next_stage = case_when(next_stage == "p"~ "s",
TRUE ~ next_stage))
# popbio::projection.matrix no funciona con tibbles, por consecuencia se convierte en data.frame
head(onepop)
## # A tibble: 6 × 13
## POPNUM year seedlings adults fertility IND_NUM stage next_stage first_year
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <dbl>
## 1 250 5 8 34 0 167 j a 1
## 2 250 5 8 34 0 168 j a 1
## 3 250 5 8 34 0 169 j a 1
## 4 250 5 8 34 0.118 170 a a 1
## 5 250 5 8 34 0 172 j j 1
## 6 250 5 8 34 0 173 j a 1
## # ℹ 4 more variables: last_year <dbl>, recruited <lgl>, died <dbl>,
## # lifespan <int>
# Crear TF = TRUE, añadir para formatear corectamente.
TF <- popbio::projection.matrix(as.data.frame(onepop),
stage = stage, fate = next_stage,
fertility="fertility", sort=c("s","j","a"), TF = TRUE)
TF # Este es la estructura de etapas de vida para esa población
## $T
##
## s j a
## s 0.09090909 0.00000000 0.00000000
## j 0.63636364 0.57446809 0.00000000
## a 0.00000000 0.29787234 0.85294118
##
## $F
##
## s j a
## s 0.0000000 0.0000000 0.1176471
## j 0.0000000 0.0000000 0.0000000
## a 0.0000000 0.0000000 0.0000000
Nuestros estadios se codifican ahora como s
(plántula), j (juvenil) y a (adulto),
y ahora tenemos dos matrices: T (transición de
estadios) y F (fecundidad). La tasa de crecimiento
asintótico de la población observada es \(\lambda =\) 0.93. Las transiciones raras
que faltan en nuestra primera matriz de transición, TF$T,
son la transición de plántula (s) a adulto (a) y la
transición de j a s. Pero sabemos que ocurren.
Dado que nuestras priores se basan en recuentos (número de individuos, N) y el tamaño de muestreo equivalente a priori se expresa como múltiplo del número de individuos observados, necesitamos obtener el número de individuos en cada etapa (\(N\)) en el primer periodo de tiempo.
Utilizamos la función raretrans::get_state_vector() para
obtener el recuento inicial de individuos, N. inicial,
N.
N <- get_state_vector(onepop, stage = stage, sort=c("s","j","a"))
N # Un vector de # de individuos iniciales para cada etapa, nota que el "stage" son los individuos en el primer muestreo
## [1] 11 47 34
La lista de matrices y el vector de cuento de individuales no tienen por qué proceder de un data.frame como hemos hecho aquí. Mientras tengan el formato esperado, pueden crearse a mano. Usamos la población 231 en el periodo 2 como ejemplo, dividiendo la matriz en matrices de transición T y fecundidad F. Abajo, m significa “muerte”, es decir, plantas que están muertas.
TF2
## $Tmat
## stage
## fate p j a
## p 0.5000000 0.0000000 0.0000000
## j 0.0000000 0.8333333 0.0000000
## a 0.0000000 0.0625000 0.8750000
##
## $Fmat
## [,1] [,2] [,3]
## [1,] 0 0 0.125
## [2,] 0 0 0.000
## [3,] 0 0 0.000
N2
## p j a
## 2 6 16
En esta matriz falta la transición de plántula a juvenil, y ninguno de los 6 juveniles murió, lo que lleva a una sobreestimación de la supervivencia. La tasa de crecimiento asintótico de la población observada es \(\lambda =\) 0.88. La matriz no es ergódica (no se puede llegar a cualquier otro estado desde uno o más estados), y reducible, lo que significa que una o más columnas y filas se pueden descartar y tienen las mismas propiedades eigen.
Tremblay (Tremblay et al. (2021)) muestran que los valores de prior de una dirichlet funciona para las columnas de la matriz de transición (T) y que valores prior gamma funciona para las columnas de la matriz de transición (F).
Por lo tanto, vamos a añadir un dirichlet uniforme con prior con un peso = \(1\) a la matriz de transición, \(T\). Aquí, tenemos 4 destinos (3 + muerte), por lo que cada destino 0,25 a la matriz de destinos observados (¡no a la matriz de transiciones!). de transición). Cuando especificamos una matriz con un prior para las transiciones, hay una fila más que columnas. Esta fila extra representa la muerte.
Tprior <- matrix(0.25, byrow = TRUE, ncol = 3, nrow=4)
fill_transitions(TF, N, P = Tprior) # resultado de la matriz de transición básica
## [,1] [,2] [,3]
## [1,] 0.10416667 0.005208333 0.007142857
## [2,] 0.60416667 0.567708333 0.007142857
## [3,] 0.02083333 0.296875000 0.835714286
# Para entender las diferencias compara los resultados con *$T* del objeto *TF*
TF
## $T
##
## s j a
## s 0.09090909 0.00000000 0.00000000
## j 0.63636364 0.57446809 0.00000000
## a 0.00000000 0.29787234 0.85294118
##
## $F
##
## s j a
## s 0.0000000 0.0000000 0.1176471
## j 0.0000000 0.0000000 0.0000000
## a 0.0000000 0.0000000 0.0000000
Podemos obtener el mismo resultado ‘a mano’ - necesitamos el vector de observaciones porque la posterior se calcula a partir de las observaciones de transiciones, no la matriz de transiciones.
Tobs <- sweep(TF$T, 2, N, "*") # obtener las observaciones de transiciones
Tobs <- rbind(Tobs, N - colSums(Tobs)) # añadir la fila de muerte
Tobs <- Tobs + 0.25 # añadir los prior
sweep(Tobs, 2, colSums(Tobs), "/")[-4,] # dividir por la suma de la column y descarta la fila de muerte
## s j a
## s 0.10416667 0.005208333 0.007142857
## j 0.60416667 0.567708333 0.007142857
## a 0.02083333 0.296875000 0.835714286
El prior uniforme rellena las transiciones que faltan, pero también crea problemas porque proporciona valores de transición que son biológicamente imposibles. Por ejemplo, proporciona una transición para adulto->plántula, cuando esta transición sólo es posible en la matriz de fecundidad \(F\). Por esta razón, no recomendamos el uso de priores uniformes. En otra palabra usando un prior uniforme no toma en cuenta el ciclo de vida de una especie.
Debemos especificar los parámetros para la fertilidad a
priori como una matriz. Las etapas que no hay reproducción o sea
que no se producen por reproducción deben ser NA, usando
NA_real_. El concepto de NA_real_ es que es un valor
que no esta presente pero con puntos decimales. Nota que el valor de
prior de la fertilidad es 0.0001.
alpha <- matrix(c(NA_real_, NA_real_, 1e-5,
NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
beta <- matrix(c(NA_real_, NA_real_, 1e-5,
NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
fill_fertility(TF, N, alpha = alpha, beta = beta)
##
## s j a
## s 0.0000000 0.0000000 0.1176473
## j 0.0000000 0.0000000 0.0000000
## a 0.0000000 0.0000000 0.0000000
El cambio en la fertilidad es < 0,0001 en comparación con el valor observado.
y beta a priori es el número de adultos observados.
obs_offspring <- N[3]*TF$F[1,3]
prior_alpha <- 1e-05
prior_beta <- 1e-05
posterior_alpha <- obs_offspring + prior_alpha
posterior_beta <- N[3] + prior_beta
posterior_alpha / posterior_beta # expected value
## [1] 0.1176473
Esto demuestra por qué la estimación puntual posterior de la fecundidad no cambia mucho; los valores no informativos de \(\alpha\) y \(\beta\) apenas cambian los valores observados.
Ahora podemos juntarlos.
unif <- list(T = fill_transitions(TF, N),
F = fill_fertility(TF, N,
alpha = alpha,
beta = beta))
unif
## $T
## [,1] [,2] [,3]
## [1,] 0.10416667 0.005208333 0.007142857
## [2,] 0.60416667 0.567708333 0.007142857
## [3,] 0.02083333 0.296875000 0.835714286
##
## $F
##
## s j a
## s 0.0000000 0.0000000 0.1176473
## j 0.0000000 0.0000000 0.0000000
## a 0.0000000 0.0000000 0.0000000
La tasa de crecimiento asintótico de la población es ahora \(\lambda =\) 0.92. La tasa de crecimiento se reduce ligeramente porque la aplicación de la prioridad uniforme a las probabilidades de transición hace que las transiciones observadas de crecimiento y supervivencia se reduzcan ligeramente en relación con las transiciones no observadas de crecimiento y supervivencia.
Por defecto, fill_transitions() devuelve la matriz de
transición \(T\), y
fill_fertility() devuelve la matriz de fertilidad \(F\). Existen otros tres otros valores que
puede tomar el argumento returnType:
fill_transitions(... returnType = "TN") puede devolver
una matriz aumentada de destinos, que es útil para la simulación. La
cuarta fila de este resultado (véase más adelante) es el estado de
mortalidad.fill_transitions(TF, N, returnType = "TN")
## [,1] [,2] [,3]
## [1,] 1.25 0.25 0.25
## [2,] 7.25 27.25 0.25
## [3,] 0.25 14.25 29.25
## [4,] 3.25 6.25 5.25
fill_fertility(... returnType = "ab") devuelve los
vectores alfa y beta de los vectores posteriores.fill_fertility(TF, N,
alpha = alpha,
beta = beta,
returnType = "ab")
## $alpha
##
## s j a
## s 4.00001
## j
## a
##
## $beta
## [,1] [,2] [,3]
## [1,] NA NA 34.00001
## [2,] NA NA NA
## [3,] NA NA NA
fill_transitions(TF, N, returnType = "A")
##
## s j a
## s 0.104166667 0.005208333 0.124789916
## j 0.604166667 0.567708333 0.007142857
## a 0.020833333 0.296875000 0.835714286
Hasta este punto, el objetivo era de entender las funciones y su aplicaciones. Ahora vamos a añadir realidad a los analisis. Como se ha mencionado no deberiamos usar priors uniforme. Debemos usar priors que son más relevante al ciclo de vida de la especie de interes.
Para solucionar el problema de la creación de transiciones imposibles, especificamos una prioridad más informativa obtenida de un experto en orquídeas epifitas (RLT). La información tiene que tener la misma forma que la matriz de transiciones con una fila más que columnas. Esa ultima fila representa los individuos que se mueren de la estapa correspondiente.
RLT_Tprior <- matrix(c(0.25, 0.025, 0.0,
0.05, 0.9, 0.025,
0.01, 0.025, 0.95,
0.69, 0.05, 0.025),
byrow = TRUE, nrow = 4, ncol = 3)
Nota la matriz tiene la 1ª fila, 3ª columna es 0,0, porque esta transición es imposible. Esta prioridad se construye de manera que las columnas suman 1, lo que crea la mayor flexibilidad para la ponderación de la prioridad. Por defecto, la suma es 1, interpretado como un tamaño de muestra a priori de 1.
fill_transitions(TF, N, P = RLT_Tprior)
## [,1] [,2] [,3]
## [1,] 0.1041666667 0.0005208333 0.0000000000
## [2,] 0.5875000000 0.5812500000 0.0007142857
## [3,] 0.0008333333 0.2921875000 0.8557142857
We can specify the weight as a multiple of the sample size for each stage.
fill_transitions(TF, N, P = RLT_Tprior, priorweight = 0.5)
## [,1] [,2] [,3]
## [1,] 0.143939394 0.008333333 0.000000000
## [2,] 0.440909091 0.682978723 0.008333333
## [3,] 0.003333333 0.206914894 0.885294118
En este caso, la prioridad se pondera con la mitad del número observado de transiciones. En este caso, con sólo 2 transiciones, el tamaño efectivo de la muestra a priori sigue siendo 1. Si el número de transiciones observadas fuera Si el número de transiciones observadas fuera mayor, una ponderación a priori de 0,5N sería mayor que 1, pero permitiría que los datos dominen.
La distribución posterior marginal de un elemento en un multinomio es una distribución beta, y usamos esto para obtener intervalos creíbles en nuestro tasas de transición. Podemos usar el tipo de retorno TN para obtener los parámetros de el multinomio deseado.
TN <- fill_transitions(TF, N, P = RLT_Tprior, priorweight = 0.5, returnType = "TN")
a <- TN[,1] # cambie 1 a 2, 3 etc para obter la distribución beta marginal de cada columna.
b <- sum(TN[,1]) - TN[,1]# cambie 1 a 2, 3 etc para obter la distribución beta marginal de cada columna.
p <- a / (a + b)
lcl <- qbeta(0.025, a, b)
ucl <- qbeta(0.975, a, b)
knitr::kable(sprintf("%.3f (%.3f, %.3f)", p, lcl, ucl))
| x |
|---|
| 0.144 (0.025, 0.343) |
| 0.441 (0.218, 0.677) |
| 0.003 (0.000, 0.038) |
| 0.412 (0.195, 0.649) |
Esas son las estimaciones puntuales (comparar con la primera columna
anterior), inferior y superior \(95\%\)
de los intervalos creíbles simétricos para transiciones de la etapa de
plántula. Existe un alto grado de incertidumbre debido a la tamaño de
muestra pequeño (\(2\)) y bajo peso en
el anterior (\(1\)), lo que lleva a un
tamaño de muestra efectivo de 3. Si aumentamos el tamaño de muestra
efectivo a \(20\) especificando:
priorweight\(= 9 (9*2 = 18 + 2 =
20)\) el los intervalos creíbles simétricos se reducen
bastante:
La importancia aqui es que el tamaño de muestra tiene un impacto sobre la confianza que se tiene sobre el estimado de punto (el promedio) de las transiciones y permanencia y mortandad.
La tasa de transición de plántula a juvenil se reduce cuando el tamaño de la muestra es demasiado grande. En general, el tamaño de la muestra previa debe ser menos que el tamaño de muestra observado.
Obteniendo intervalos creíbles sobre la tasa de crecimiento
asintótica, \(\lambda\), requiere
simular matrices a partir de las distribuciones posteriores. Esto es
algo complicado de hacer correctamente, y hemos escrito una función
raretrans::sim_transitions() para generar una lista de
matrices simuladas dada la matriz observada y especificaciones
previas.
sim_transitions(TF, N, P = RLT_Tprior, alpha = alpha, beta = beta,
priorweight = 0.5)
## [[1]]
## [,1] [,2] [,3]
## [1,] 1.043122e-01 0.0124868 0.3120948868
## [2,] 4.764632e-01 0.6250580 0.0009184977
## [3,] 1.042960e-09 0.2741062 0.8347211631
Ahora simulamos 5000 veces, calculamos el valor \(\lambda\) de cada matriz y creamos un histograma de la distribución.
#set.seed(8390278) # make this part reproducible
alpha2 <- matrix(c(NA_real_, NA_real_, 0.025,
NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
beta2 <- matrix(c(NA_real_, NA_real_, 1,
NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_), nrow=3, ncol = 3, byrow = TRUE)
# generar 5000 matrices basado en las previas de transciones y de fertilidades, el tamaño de muestra, en adición de los datos
RLT_0.5 <- sim_transitions(TF, N, P = RLT_Tprior, alpha = alpha2, beta = beta2,
priorweight = 0.5, samples = 5000)
# extract the lambdas for each matrix
RLT_0.5 <- tibble(lposterior = map_dbl(RLT_0.5, lambda)) # convertir la lista en un tibble
ggplot(data = RLT_0.5,
mapping = aes(x = lposterior)) +
geom_histogram(binwidth = 0.01, colour="white") +
rlt_theme
También podemos calcular algunas estadísticas de resumen.
pincrease es el probabilidad de que \(\lambda > 1\).
RLT_0.5_summary <- summarize(RLT_0.5,
medianL = median(lposterior),
meanL = mean(lposterior),
lcl = quantile(lposterior, probs = 0.025),
ucl = quantile(lposterior, probs = 0.975),
pincrease = sum(lposterior > 1.)/n())
knitr::kable(RLT_0.5_summary, digits = 2)
| medianL | meanL | lcl | ucl | pincrease |
|---|---|---|---|---|
| 0.96 | 0.96 | 0.87 | 1.04 | 0.13 |
Por: Tamara
Ahora el primer paso es explicar a que …..
Por: ???
Por: Adriana Ramirez Martinez
Ahora el primer paso es explicar a que …..
Por: ???
Por: Roberto Salguero-Gómez
Por: Un overview de la historia de estudios PPm con orquideas
library(Rcompadre)
library(tidyverse)
library(gt)
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
load("~/Dropbox/GitHub_Dropbox_Drive/GitHub/Taller_Demo_Peru/Taller_Diagnostico_Poblacional/COMPADRE_v.6.23.5.0.RData")
ALLSp=as_cdb(compadre) # Un baso critico: Convertir la base de datos anterior COM(P)ADRE (de clase 'list') en la base en un objeto CompadreDB.
names(ALLSp) # Nombre de las variables
## [1] "mat" "MatrixID" "SpeciesAuthor"
## [4] "SpeciesAccepted" "CommonName" "Kingdom"
## [7] "Phylum" "Class" "Order"
## [10] "Family" "Genus" "Species"
## [13] "Infraspecies" "InfraspeciesType" "OrganismType"
## [16] "DicotMonoc" "AngioGymno" "Authors"
## [19] "Journal" "SourceType" "OtherType"
## [22] "YearPublication" "DOI_ISBN" "AdditionalSource"
## [25] "StudyDuration" "StudyStart" "StudyEnd"
## [28] "ProjectionInterval" "MatrixCriteriaSize" "MatrixCriteriaOntogeny"
## [31] "MatrixCriteriaAge" "MatrixPopulation" "NumberPopulations"
## [34] "Lat" "Lon" "Altitude"
## [37] "Country" "Continent" "Ecoregion"
## [40] "StudiedSex" "MatrixComposite" "MatrixSeasonal"
## [43] "MatrixTreatment" "MatrixCaptivity" "MatrixStartYear"
## [46] "MatrixStartSeason" "MatrixStartMonth" "MatrixEndYear"
## [49] "MatrixEndSeason" "MatrixEndMonth" "CensusType"
## [52] "MatrixSplit" "MatrixFec" "Observations"
## [55] "MatrixDimension" "SurvivalIssue" "_Database"
## [58] "_PopulationStatus" "_PublicationStatus"
index_O=ALLSp %>%
filter(Family %in% c("Orchidaceae")) # Extraer la orquídeas de la base de datos.
unique(index_O$SpeciesAccepted)
## [1] "Caladenia amonea" "Caladenia argocalla"
## [3] "Caladenia clavigera" "Caladenia elegans"
## [5] "Caladenia graniticola" "Caladenia macroclavia"
## [7] "Caladenia oenochila" "Caladenia rosella"
## [9] "Caladenia valida" "Epipactis atrorubens"
## [11] "Lepanthes rubripetala" "Spathoglottis plicata"
## [13] "Broughtonia cubensis" "Cephalanthera longifolia"
## [15] "Cleistes bifaria" "Cypripedium calceolus"
## [17] "Dendrophylax lindenii" "Erycina crista-galli"
## [19] "Lepanthes acuminata" "Lepanthes caritensis"
## [21] "Oncidium poikilostalix" "Serapias cordigera"
## [23] "Telipogon helleri" "Aspasia principissa"
## [25] "Guarianthe aurantiaca" "Jacquiniella leucomelana"
## [27] "Jacquiniella teretifolia" "Lepanthes eltoroensis"
## [29] "Lycaste aromatica" "Tolumnia variegata"
## [31] "Cleistesiopsis bifaria" "Cleistesiopsis divaricata"
## [33] "Corallorhiza trifida" "Cypripedium fasciculatum"
## [35] "Cypripedium lentiginosum" "Cypripedium parviflorum"
## [37] "Dactylorhiza lapponica" "Herminium monorchis"
## [39] "Himantoglossum hircinum" "Lepanthes rupestris"
## [41] "Neotinea ustulata" "Ophrys sphegodes"
## [43] "Orchis purpurea" "Platanthera hookeri"
## [45] "Oeceoclades maculata" "Brassavola cucullata"
To know how long the studies were and be unique I need to select combinations of variables that make it unique.
Subset
names(index_O)
## [1] "mat" "MatrixID" "SpeciesAuthor"
## [4] "SpeciesAccepted" "CommonName" "Kingdom"
## [7] "Phylum" "Class" "Order"
## [10] "Family" "Genus" "Species"
## [13] "Infraspecies" "InfraspeciesType" "OrganismType"
## [16] "DicotMonoc" "AngioGymno" "Authors"
## [19] "Journal" "SourceType" "OtherType"
## [22] "YearPublication" "DOI_ISBN" "AdditionalSource"
## [25] "StudyDuration" "StudyStart" "StudyEnd"
## [28] "ProjectionInterval" "MatrixCriteriaSize" "MatrixCriteriaOntogeny"
## [31] "MatrixCriteriaAge" "MatrixPopulation" "NumberPopulations"
## [34] "Lat" "Lon" "Altitude"
## [37] "Country" "Continent" "Ecoregion"
## [40] "StudiedSex" "MatrixComposite" "MatrixSeasonal"
## [43] "MatrixTreatment" "MatrixCaptivity" "MatrixStartYear"
## [46] "MatrixStartSeason" "MatrixStartMonth" "MatrixEndYear"
## [49] "MatrixEndSeason" "MatrixEndMonth" "CensusType"
## [52] "MatrixSplit" "MatrixFec" "Observations"
## [55] "MatrixDimension" "SurvivalIssue" "_Database"
## [58] "_PopulationStatus" "_PublicationStatus"
SPECIES_O=index_O %>% select(StudyStart, StudyEnd, SpeciesAccepted, YearPublication, Authors, DOI_ISBN, OrganismType, MatrixPopulation,mat) %>%
group_by(SpeciesAccepted, YearPublication, Authors, DOI_ISBN, OrganismType, StudyStart, StudyEnd) %>%
summarize(n_populations = length(unique(MatrixPopulation))) %>%
arrange(desc(n_populations)) %>%
mutate(StudyStart=as.numeric(StudyStart)) %>%
mutate(StudyEnd=as.numeric(StudyEnd)) %>%
drop_na(StudyStart, StudyEnd)
SPECIES_O %>% kable()
| SpeciesAccepted | YearPublication | Authors | DOI_ISBN | OrganismType | StudyStart | StudyEnd | n_populations |
|---|---|---|---|---|---|---|---|
| Lepanthes caritensis | 2018 | Crain; Tremblay; Ferguson | 10.1002/1438-390X.1002 | Epiphyte | 2010 | 2012 | 18 |
| Epipactis atrorubens | 2017 | Hens; Pakanen; Jäkäläniemi; Tuomi; Kvist | 10.1016/j.biocon.2017.04.019 | Herbaceous perennial | 2000 | 2015 | 8 |
| Lepanthes rubripetala | 2010 | Schödelbauerová; Tremblay; Kindlmann | 10.1007/s10531-009-9724-1 | Epiphyte | 1994 | 2007 | 8 |
| Lepanthes rupestris | 2001 | Tremblay; Ackerman | 10.1006/bijl.2000.0485 | Herbaceous perennial | 1994 | 1996 | 7 |
| Lepanthes rupestris | 2014 | Tremblay; McCarthy | 10.1371/journal.pone.0102859 | Herbaceous perennial | 1993 | 1996 | 7 |
| Orchis purpurea | 2010 | Jacquemyns; Brys; Jongejans | 10.1890/08-2321.1 | Herbaceous perennial | 2002 | 2008 | 7 |
| Lepanthes rubripetala | 2001 | Tremblay; Ackerman | 10.1006/bijl.2000.0485 | Epiphyte | 1994 | 1996 | 6 |
| Lepanthes rubripetala | 2015 | Tremblay; Raventós; Ackerman; | 10.1093/aob/mcv031 | Epiphyte | 1994 | 1996 | 6 |
| Neotinea ustulata | 2007 | Shefferson; Tali | 10.1111/j.1365-2745.2006.01195.x | Herbaceous perennial | 1993 | 2005 | 6 |
| Serapias cordigera | 2014 | Pellegrino; Bellusci | 10.1111/boj.12204 | Herbaceous perennial | 1999 | 2012 | 6 |
| Cephalanthera longifolia | 2012 | Shefferson; Kull; Tali; Kellett | 10.1890/ES11-00328.1 | Herbaceous perennial | 2002 | 2007 | 4 |
| Cleistesiopsis bifaria | 1991 | Wells; Willems | 90-5103-068-1 | Herbaceous perennial | 1983 | 1990 | 4 |
| Cypripedium calceolus | 2005 | Nicolè; Brzosko; Till-Bottraud | 10.1111/j.1365-2745.2005.01010.x | Herbaceous perennial | 1991 | 2000 | 4 |
| Cypripedium fasciculatum | 2011 | Thorpe; Stanley; Kayne; Latham | NA | Herbaceous perennial | 1999 | 2007 | 4 |
| Oeceoclades maculata | 2019 | Riverón-Giró; Raventós; Damon; García-González; Mújica | 10.1007/s10530-019-01945-7 | Herbaceous perennial | 2014 | 2016 | 4 |
| Platanthera hookeri | 2007 | Reddoch; Reddoch | 10.3159/1095-5674(2007)134[369:PEOPHO]2.0.CO;2 | Herbaceous perennial | 1990 | 2005 | 4 |
| Brassavola cucullata | 2020 | Ackerman; Tremblay; Pérez; Madden; Bechtold; Boeken | NA | Epiphyte | 2009 | 2014 | 3 |
| Cypripedium calceolus | 2012 | Shefferson; Kull; Tali; Kellett | 10.1890/ES11-00328.1 | Herbaceous perennial | 2002 | 2007 | 3 |
| Dactylorhiza lapponica | 2010 | Sletvold; Øien; Moen | 10.1016/j.biocon.2009.12.017 | Herbaceous perennial | 1990 | 2006 | 3 |
| Lepanthes eltoroensis | 2001 | Tremblay; Ackerman | 10.1006/bijl.2000.0485 | Epiphyte | 1994 | 1996 | 3 |
| Cleistes bifaria | 2006 | Gregg; Kéry | 10.1016/j.biocon.2005.09.044 | Herbaceous perennial | 1986 | 1996 | 2 |
| Cypripedium calceolus | 2010 | García; Goñi; Guzman | 10.1111/j.1523-1739.2010.01466.x | Herbaceous perennial | 1994 | 2002 | 2 |
| Erycina crista-galli | 2007 | Mondragón; Maldonado; Aguilar-Santelises | 10.1111/boj.12204 | Epiphyte | 2004 | 2005 | 2 |
| Jacquiniella leucomelana | 2009 | Winkler; Hülber; Hietz | 10.1093/aob/mcp188 | Epiphyte | 2002 | 2005 | 2 |
| Jacquiniella teretifolia | 2009 | Winkler; Hülber; Hietz | 10.1093/aob/mcp188 | Epiphyte | 2002 | 2005 | 2 |
| Lepanthes caritensis | 1997 | Tremblay | NA | Epiphyte | 1994 | 1996 | 2 |
| Lycaste aromatica | 2009 | Winkler; Hülber; Hietz | 10.1093/aob/mcp188 | Epiphyte | 2002 | 2005 | 2 |
| Aspasia principissa | 2006 | Zotz; Schmidt | 10.1016/j.biocon.2005.07.022 | Epiphyte | 1997 | 2004 | 1 |
| Broughtonia cubensis | 2015 | Raventós; Gonzalez; Mújica; Bonet | 10.1111/btp.12231 | Epiphyte | 2006 | 2010 | 1 |
| Caladenia amonea | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia argocalla | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia clavigera | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia elegans | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia graniticola | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia macroclavia | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia oenochila | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia rosella | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Caladenia valida | 2009 | Tremblay; Pérez; Larcombe; Brown; Quarmby; Bickerton; French; Bould | 10.1071/BT08167 | Epiphyte | 1996 | 2007 | 1 |
| Cleistesiopsis divaricata | 1991 | Wells; Willems | 90-5103-068-1 | Herbaceous perennial | 1983 | 1990 | 1 |
| Corallorhiza trifida | 2009 | Iriondo; Giménez-Benavides; Albert; Lozano; Escudero | 978-84-8014-746-0 | Herbaceous perennial | 2001 | 2004 | 1 |
| Cypripedium parviflorum | 2014 | Shefferson; Warren II; Pulliam | 10.1111/1365-2745.12281 | Herbaceous perennial | 1994 | 2012 | 1 |
| Dactylorhiza lapponica | 2013 | Sletvold; Dahlgren; Øien; Moen; Ehrlén | 10.1111/gcb.12167 | Herbaceous perennial | 1981 | 2010 | 1 |
| Dendrophylax lindenii | 2015 | Raventós; Gonzalez; Mújica; Bonet | 10.1111/btp.12231 | Epiphyte | 2006 | 2010 | 1 |
| Epipactis atrorubens | 2011 | Jäkäläniemi; Crone; Närhi; Tuomi | 10.1890/10-1957.1 | Herbaceous perennial | 2000 | 2008 | 1 |
| Guarianthe aurantiaca | 2009 | Mondragón | 10.1111/j.1442-1984.2009.00230.x | Epiphyte | 2004 | 2006 | 1 |
| Herminium monorchis | 1998 | Wells; Rothery; Cox; Bamford | 10.1111/j.1095-8339.1998.tb02514.x | Herbaceous perennial | 1966 | 1995 | 1 |
| Himantoglossum hircinum | 2006 | Pfeifer; Wiegand; Heinrich; Jetschke | 10.1111/j.1365-2664.2006.01148.x | Herbaceous perennial | 1976 | 2001 | 1 |
| Lepanthes acuminata | 2018 | Raventós; García-González; Riverón-Giró; Damon | 10.1080/17550874.2018.1444110 | Epiphyte | 2013 | 2015 | 1 |
| Oncidium poikilostalix | 2017 | García-González; Damon; Raventós; Riverón-Giró; Mújica; Solís-Montero | 10.1080/17550874.2017.1315840 | Epiphyte | 2013 | 2015 | 1 |
| Oncidium poikilostalix | 2018 | Raventós; García-González; Riverón-Giró; Damon | 10.1080/17550874.2018.1444110 | Epiphyte | 2013 | 2015 | 1 |
| Ophrys sphegodes | 1991 | Wells; Willems | 90-5103-068-1 | Herbaceous perennial | 1983 | 1990 | 1 |
| Spathoglottis plicata | 2017 | Falcón; Ackerman; Tremblay | 10.1007/s10530-016-1318-8 | Herbaceous perennial | 2009 | 2011 | 1 |
| Telipogon helleri | 2018 | Raventós; García-González; Riverón-Giró; Damon | 10.1080/17550874.2018.1444110 | Epiphyte | 2013 | 2015 | 1 |
| Tolumnia variegata | 1993 | Calvo | 10.2307/1940473 | Epiphyte | 1988 | 1990 | 1 |
write_csv(SPECIES_O, "Species_O.csv")
SPECIES_O$SpeciesAccepted <- fct_reorder(SPECIES_O$SpeciesAccepted, SPECIES_O$StudyStart, .desc = FALSE)
ggplot(SPECIES_O, aes(SpeciesAccepted, color=OrganismType))+
geom_linerange(aes(x= SpeciesAccepted , ymin=StudyStart, ymax=StudyEnd))+
coord_flip()+
theme(legend.position = c(0.2, 0.8))+
theme(axis.text.x = element_text(color = "grey20", size = 9, angle = 90, hjust = .5, vjust = .5, face = "plain"),
axis.text.y = element_text(color = "grey20", size = 7, angle = 0, hjust = 1, vjust = 0, face = "plain"),
axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))+
ylab("")+
xlab("")
index_O=index_O %>%
mutate(StudyDuration=as.numeric(StudyDuration))
table(index_O$StudyDuration)
##
## 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 19 26 30
## 2 211 37 2 82 43 26 47 28 2 9 6 86 53 7 1 1 3
table(index_O$OrganismType)
##
## Epiphyte Herbaceous perennial
## 248 399
ggplot(index_O, aes(StudyDuration, fill=OrganismType))+
geom_histogram(colour="white")+
facet_wrap(~OrganismType)+
theme(legend.position = "none")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (`stat_bin()`).
ggsave("Duración_Epi_Ter.pdf")
## Saving 7 x 5 in image
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (`stat_bin()`).
plot(index_O$Lon,index_O$Lat,main = "Location")
Getting the whole database for orchids
index <- which(compadre$metadata$Family=="Orchidaceae")
names(Compadre)
## [1] "mat" "SpeciesAuthor" "SpeciesAccepted"
## [4] "CommonName" "Genus" "Family"
## [7] "Order" "Class" "Phylum"
## [10] "Kingdom" "OrganismType" "DicotMonoc"
## [13] "AngioGymno" "Authors" "Journal"
## [16] "YearPublication" "DOI_ISBN" "AdditionalSource"
## [19] "StudyDuration" "StudyStart" "StudyEnd"
## [22] "ProjectionInterval" "NumberPopulations" "MatrixCriteriaSize"
## [25] "MatrixCriteriaOntogeny" "MatrixCriteriaAge" "MatrixPopulation"
## [28] "Lat" "Lon" "Altitude"
## [31] "Country" "Continent" "Ecoregion"
## [34] "StudiedSex" "MatrixComposite" "MatrixTreatment"
## [37] "MatrixCaptivity" "MatrixStartYear" "MatrixStartSeason"
## [40] "MatrixStartMonth" "MatrixEndYear" "MatrixEndSeason"
## [43] "MatrixEndMonth" "MatrixSplit" "MatrixFec"
## [46] "Observation" "MatrixDimension" "SurvivalIssue"
## [49] "AnnualPeriodicity"
subset(index_O, Family =="Orchidaceae" &
MatrixDimension >2)
## A COM(P)ADRE database ('CompadreDB') object with 46 SPECIES and 647 MATRICES.
##
## # A tibble: 647 × 59
## mat MatrixID SpeciesAuthor SpeciesAccepted CommonName Kingdom Phylum
## <list> <int> <chr> <chr> <chr> <chr> <chr>
## 1 <CompdrMt> 238285 Caladenia_amon… Caladenia amon… <NA> Plantae Trach…
## 2 <CompdrMt> 238286 Caladenia_argo… Caladenia argo… <NA> Plantae Trach…
## 3 <CompdrMt> 238287 Caladenia_clav… Caladenia clav… <NA> Plantae Trach…
## 4 <CompdrMt> 238288 Caladenia_eleg… Caladenia eleg… <NA> Plantae Trach…
## 5 <CompdrMt> 238289 Caladenia_gran… Caladenia gran… <NA> Plantae Trach…
## 6 <CompdrMt> 238290 Caladenia_macr… Caladenia macr… <NA> Plantae Trach…
## 7 <CompdrMt> 238291 Caladenia_oeno… Caladenia oeno… <NA> Plantae Trach…
## 8 <CompdrMt> 238292 Caladenia_rose… Caladenia rose… <NA> Plantae Trach…
## 9 <CompdrMt> 238293 Caladenia_vali… Caladenia vali… <NA> Plantae Trach…
## 10 <CompdrMt> 238565 Epipactis_atro… Epipactis atro… Darkred h… Plantae Trach…
## # ℹ 637 more rows
## # ℹ 52 more variables: Class <chr>, Order <chr>, Family <chr>, Genus <chr>,
## # Species <chr>, Infraspecies <chr>, InfraspeciesType <chr>,
## # OrganismType <chr>, DicotMonoc <chr>, AngioGymno <chr>, Authors <chr>,
## # Journal <chr>, SourceType <chr>, OtherType <chr>, YearPublication <chr>,
## # DOI_ISBN <chr>, AdditionalSource <chr>, StudyDuration <dbl>,
## # StudyStart <chr>, StudyEnd <chr>, ProjectionInterval <chr>, …
subset(index_O,DicotMonoc == "Eudicot" &
Country %in% c("USA", "CAN") &
MatrixDimension > 2)
## A COM(P)ADRE database ('CompadreDB') object with 0 SPECIES and 0 MATRICES.
##
## # A tibble: 0 × 59
## # ℹ 59 variables: mat <list>, MatrixID <int>, SpeciesAuthor <chr>,
## # SpeciesAccepted <chr>, CommonName <chr>, Kingdom <chr>, Phylum <chr>,
## # Class <chr>, Order <chr>, Family <chr>, Genus <chr>, Species <chr>,
## # Infraspecies <chr>, InfraspeciesType <chr>, OrganismType <chr>,
## # DicotMonoc <chr>, AngioGymno <chr>, Authors <chr>, Journal <chr>,
## # SourceType <chr>, OtherType <chr>, YearPublication <chr>, DOI_ISBN <chr>,
## # AdditionalSource <chr>, StudyDuration <dbl>, StudyStart <chr>, …
#cdb_compare(index_O,x)
x <- subset(index_O,Family == "Orchidaceae")
x_OT=x %>%
group_by(OrganismType)
#Orchids_New=as_cdb(index)
#compadre$mat[index]
Compadre_flagged <- cdb_flag(index_O)
x <- subset(Compadre_flagged, check_NA_A == FALSE & check_ergodic == TRUE)
lambdaVals <- sapply(matA(x), popdemo::eigs, what="lambda")
summary(lambdaVals)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.3888 0.9635 0.9973 0.9944 1.0232 1.7760
hist(lambdaVals, main = "Lambda values")
library(purrr)
lambdaVals1 <- map_dbl(matA(x), ~popdemo::eigs(.x, what="lambda"))
#Or with popbio, which avoids some warning messages…
lambdaVals2 <- map_dbl(matA(x), ~popbio::lambda(.x))
x2=x %>%
mutate(OrganismType = case_when(
Genus == "Caladenia" & OrganismType == "Epiphyte" ~ "Herbaceous perennial",
TRUE ~ OrganismType
))
epi=x2 %>%
filter(OrganismType=="Epiphyte")
terr=x2 %>%
filter(OrganismType=="Herbaceous perennial")
Compadre_flagged <- cdb_flag(index_O)
x <- subset(Compadre_flagged, check_NA_A == FALSE & check_ergodic == TRUE)
lambdaVals <- sapply(matA(x), popdemo::eigs, what=“lambda”) summary(lambdaVals) hist(lambdaVals, main = “Lambda values”)
Compadre_flagged_epi <- cdb_flag(epi)
x_epi <- subset(Compadre_flagged_epi, check_NA_A == FALSE & check_ergodic == TRUE)
#sapply(matA(x_epi), popdemo::eigs, what="lambda")
library(purrr)
lambda_epi <- map_dbl(matA(x_epi), ~popdemo::eigs(.x, what="lambda"))
#Or with popbio, which avoids some warning messages…
lambda_terr <- map_dbl(matA(terr), ~popbio::lambda(.x))
summary(lambda_epi)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.3888 0.9874 0.9972 0.9784 1.0027 1.3592
hist(lambda_epi, main = "Lambda values")
summary(lambda_terr)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.4089 0.9349 1.0000 1.0053 1.0538 1.7760
hist(lambda_terr, main = "Lambda values")
df_Lamb_epi=as.data.frame(lambda_epi)
df_Lamb_epi=df_Lamb_epi %>%
add_column(Habit_Type = "Epiphyte") %>%
rename(lambda=lambda_epi)
df_Lamb_terr=as.data.frame(lambda_terr)
df_Lamb_terr=df_Lamb_terr %>%
add_column(Habit_Type = "Terrestrial")%>%
rename(lambda=lambda_terr)
ALL_Lambdas=rbind(df_Lamb_epi, df_Lamb_terr)
ggplot(ALL_Lambdas, aes(lambda, fill=Habit_Type ))+
geom_histogram(colour="white") +
facet_wrap( ~Habit_Type)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
The number of populations
x2 %>%
group_by(SpeciesAccepted) %>%
summarize(n_populations = length(unique(MatrixPopulation))) %>%
arrange(desc(n_populations))
## # A tibble: 45 × 2
## SpeciesAccepted n_populations
## <chr> <int>
## 1 Lepanthes rubripetala 20
## 2 Lepanthes rupestris 14
## 3 Lepanthes caritensis 13
## 4 Cypripedium calceolus 9
## 5 Orchis purpurea 7
## 6 Neotinea ustulata 6
## 7 Serapias cordigera 6
## 8 Cypripedium fasciculatum 4
## 9 Epipactis atrorubens 4
## 10 Oeceoclades maculata 4
## # ℹ 35 more rows
compadre_replicated_pops <- x2 %>%
group_by(SpeciesAccepted) %>%
mutate(n_pops = length(unique(MatrixPopulation))) %>%
ungroup() %>%
subset(n_pops >= 10)
compadre_replicated_pops
## A COM(P)ADRE database ('CompadreDB') object with 3 SPECIES and 167 MATRICES.
##
## # A tibble: 167 × 74
## mat MatrixID SpeciesAuthor SpeciesAccepted CommonName Kingdom Phylum
## <list> <int> <chr> <chr> <chr> <chr> <chr>
## 1 <CompdrMt> 238838 Lepanthes_rubr… Lepanthes rubr… <NA> Plantae Magno…
## 2 <CompdrMt> 239751 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 3 <CompdrMt> 239752 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 4 <CompdrMt> 239753 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 5 <CompdrMt> 239754 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 6 <CompdrMt> 239755 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 7 <CompdrMt> 239756 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 8 <CompdrMt> 239757 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 9 <CompdrMt> 239758 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## 10 <CompdrMt> 239759 Lepanthes_cari… Lepanthes cari… <NA> Plantae Magno…
## # ℹ 157 more rows
## # ℹ 67 more variables: Class <chr>, Order <chr>, Family <chr>, Genus <chr>,
## # Species <chr>, Infraspecies <chr>, InfraspeciesType <chr>,
## # OrganismType <chr>, DicotMonoc <chr>, AngioGymno <chr>, Authors <chr>,
## # Journal <chr>, SourceType <chr>, OtherType <chr>, YearPublication <chr>,
## # DOI_ISBN <chr>, AdditionalSource <chr>, StudyDuration <dbl>,
## # StudyStart <chr>, StudyEnd <chr>, ProjectionInterval <chr>, …
ggplot2::ggplot(x2, aes(Lon, Lat)) +
borders(database = "world", fill = "grey80", col = NA) +
geom_point(col = "steelblue", size = 1.8, alpha = 0.8)
## Warning: Removed 28 rows containing missing values (`geom_point()`).
# function to calculate life expectancy
lifeExpectancy <- function(matU, startLife) {
N <- solve(diag(nrow(matU)) - matU)
return(colSums(N)[startLife])
}
compadre_life_expect <- x2 %>%
filter(MatrixComposite == "Mean", # filter is the dplyr version of subset
MatrixTreatment == "Unmanipulated",
MatrixCaptivity == "W",
#ProjectionInterval == "1"
) %>%
mutate(StageID = cdb_id_stages(.)) %>%
cdb_collapse(columns = "StageID") %>%
cdb_flag() %>%
filter(check_NA_U == FALSE,
check_zero_U == FALSE,
check_singular_U == FALSE) %>%
mutate(matU = matU(.), start_life = mpm_first_active(.)) %>%
mutate(life_expectancy = mapply(lifeExpectancy, matU, start_life)) %>%
# filter(life_expectancy >= 1) %>%
mutate(OrganismType = reorder(OrganismType, life_expectancy, median))
## Warning in mpm_mean(x$mat): CompadreMat objects in given list do not all have
## the same MatrixClassOrganized. Returning MatrixClassOrganized from first list
## element
ggplot2::ggplot(compadre_life_expect, aes(OrganismType, life_expectancy)) +
geom_boxplot() +
scale_y_log10() +
coord_flip() +
labs(x = NULL, y = "Life expectancy (years)")
## Warning: Removed 1 rows containing non-finite values (`stat_boxplot()`).
library(Rcompadre)
library(popdemo)
## Welcome to popdemo! This is version 1.3-0
## Use ?popdemo for an intro, or browseVignettes('popdemo') for vignettes
## Citation for popdemo is here: doi.org/10.1111/j.2041-210X.2012.00222.x
## Development and legacy versions are here: github.com/iainmstott/popdemo
data(Compadre)
Compadre$matA <- matA(Compadre)
# create empty vector to store output
Compadre$dim <- numeric(nrow(Compadre))
index$dim <- numeric(nrow(index_O))
## Warning in index$dim <- numeric(nrow(index_O)): Coercing LHS to a list
# loop through all rows of Compadre
for (i in seq_len(nrow(Compadre))) {
Compadre$dim[i] <- nrow(Compadre$matA[[i]])
}
# function to determine whether matrix 'mat' has any stages with no transitions
NullStages <- function(mat) any(colSums(mat) == 0)
# apply function to every element of A
Compadre$null_stages <- sapply(Compadre$matA, NullStages)
NullStages(Compadre$matA[[1]]) # apply function to single element
## [1] FALSE
Compadre$null_stages <- sapply(matA(Compadre), NullStages)
Por: Grupo de Anne
Por: Ernesto y Elaine
Por: Nhora
Por: RLT
El valor de los estudios cientificos es que los datos representa una visión suficiente cerca a la realidad. El objetivo es tener una apreciación de los parametros más importante para definir un cierto patrón o interacciones. Por concequencia la base de todo estudios is based on the fundamewntal units of data collection. If the data do not represent the reality of the study then the interperettion of the analysis is likely to be erroneous. Fancy mathematics and analyses will NOT result in better or more realistic interpretation if the data is erroneous.
In this section we will consider different aspects of population projection matrix analises and different aspects of the data collection or analysis which are problematic. For each of the problematic situation I will show an example and how it impacts the results and analyses. These “Impacts” are not meant to be inclusive of all possible results of non-sensical data, but an example of not considering these issues and how it may warp the intepretations. Thus a warning to all population biologist to be weary of these issues.
Without a doubt the main topic (although exclusive) for the use of PPM has been to evaluate population projection of rare or endangered species (ref). Consequently, sample size of the study or some of the life stages/ages are reduced. These reduced sample size cause parameter estimates and often non-sensical results.
Consider a species were data is collected and the transition matrix (Sp1matU) is as follows and fertility matriz is (Sp1matF). Note that none of the individuals died in the adult stage (perfect survivorship). Consiquently, the population size never decreases or increases after a time period. Under ALL biologically realistic modelling we would expect populaiton size to sdtart decreasing if a population has no receuitment.
library(DiagrammeR)
Sp1matU <- rbind(
c(0.0, 0.0, 0.0),
c(0.5, 0.3, 0.0),
c(0.0, 0.4, 1.0)
) # transition matrix
Sp1matF <- rbind(
c(0.0, 0.0, 1.0),
c(0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0)
) # fertility matrix
Sp1matA = Sp1matU+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")
plot_life_cycle(Sp1matU, stages=stages, fontsize = 0)
Thus if we analize this matrix we assume that none of the individuals in the adult stage die, at any time period!!!. Clearly this is not realistic. For any species the likelyhood of death at any stage is never zero (although is could very small) and thus our matrix is non-sensicle. Consider a tree species, such a Sequoia, it is the likely for large trees of this species it is likely to that survivorship is very high, however never 100%.
In the following script we show that population changes after 5 -6 periods reminds close to one and does not change eventhough we have not recruits (we use the transition matrix without fertility). If there are no recruits (fertility matrix) population size should reduce with time.
n=c(5,5,5)
library(popdemo)
library(popbio)
truelambda(Sp1matU)
## [,1] [,2]
## [1,] 0.9999999 1
## [2,] 0.9999999 1
## [3,] 0.9999999 1
pop.projection(Sp1matU, n=n)$pop.changes
## [1] 0.7333333 0.8909091 0.9632653 0.9885593 0.9965281 0.9989548 0.9996861
## [8] 0.9999058 0.9999717 0.9999915 0.9999975 0.9999992 0.9999998 0.9999999
## [15] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
Note that in this new model although surviviroship is very close to zero (0.995), and consequently population decline in every time period (even if only by a small fraction) is possible.
Sp1matU_2 <- rbind(
c(0.0, 0.0, 0.0),
c(0.5, 0.3, 0.0),
c(0.0, 0.4, 0.995)
) # transition matrix
Sp1matF <- rbind(
c(0.0, 0.0, 1.0),
c(0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0)
) # fertility matrix
Sp1matA_2=Sp1matU_2+Sp1matF
pop.projection(Sp1matU_2, n=n)$pop.changes
## [1] 0.7316667 0.8874829 0.9586555 0.9836264 0.9915311 0.9939504 0.9946832
## [8] 0.9949045 0.9949712 0.9949913 0.9949974 0.9949992 0.9949998 0.9949999
## [15] 0.9950000 0.9950000 0.9950000 0.9950000 0.9950000
In the present scenario, juveniles do not grow to become adults, all juveniles either remain juveniles or die. Note the life cycle figure where no arrows connect juveniles to adults.
library(DiagrammeR)
Sp1matU_NT <- rbind(
c(0.0, 0.0, 0.0),
c(0.5, 0.7, 0.0),
c(0.0, 0.0, 0.995)
) # transition matrix
Sp1matF <- rbind(
c(0.0, 0.0, 1.0),
c(0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0)
) # fertility matrix
Sp1matA_NT = Sp1matU_NT+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")
plot_life_cycle(Sp1matU_NT, stages=stages, fontsize = 0)
As shown by Caswell (2000) and more recently explored by Stott et al. (2010) matrices need to be irreducible. The concept of irreducibility is associated with the life cycle of the species and the matrix includes the transitions from all stages to all other stages. The above life cycle figure is missing two important components in the life history of the species, no juveniles grow to become adults and none of the adults produce seedlings (seeds that grow to seedlings).
An easy way of determining if the matrix is irreducible is to read the follwowing script isIrreducible in the package (popdemo). Note that is this case the result is False for the above matrix.
isIrreducible(Sp1matU_NT) # for the transiiton matrix, missing a transition stage and fertility
## [1] FALSE
isIrreducible(Sp1matA_NT) # for the TF matrix, missing a transition stage
## [1] FALSE
# Now considering Sp1matA_2
isIrreducible(Sp1matA_2) # includes all transitions and fertility
## [1] TRUE
Complete mortality of one or more stages. It is often observed that survivorship of smaller individuals or the first stage of the life cycle of a species is highly risky, where the likelihood of survbivorship is very low. For example, most seeds do not survive to germinate. This is likely the norm in orchids where seed production is very high (sometimes millions seeds in one seed capsule, i.e Catasetum; ref), but few are shown to germinate (ref). However this is not limited to orchids, in trees the same pattern may be observed, for example in Nothofagus pumilio seedling recruitment was less than 1.5% Torres et al. (2015). NEED EXAMPLE OF NO SEED OR SEEDLING RECRUITMENTS.
As it is well known that seed germination in orchids is less than straightforward and many variables may influence seed germination Rasmussen et al. (2015). …….
In the present life cycle graph, none of the seedling survive or growth to the next stage. Note the first column in the transition matrix all values are zero. The population may have started with many (even thousands) of seedling, but none grew to become a juvenile or remained as seedlings. This results in a matrix that is reducible isIrreducible = FALSE and consequently does not comply with the requirements needed.
library(DiagrammeR)
Sp1matU_NS <- rbind(
c(0.0, 0.0, 0.0),
c(0.0, 0.7, 0.0),
c(0.0, 0.25, 0.995)
) # transition matrix
Sp1matF <- rbind(
c(0.0, 0.0, 1.0),
c(0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0)
) # fertility matrix
Sp1matA_NS = Sp1matU_NS+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")
plot_life_cycle(Sp1matU_NS, stages=stages, fontsize = 0)
isIrreducible(Sp1matU_NS)
## [1] FALSE
The importance of considering how fertility included in the life cycle is extremely important, and if erroneously considered may result in results and interpretation that are non-sensicle. We would show a few example of how these can be included in the life cycle and matrix and result in cause problems.
Assume you have a species where you model the life cycle as seedling, juvenile and adult. Fertility is measured as the number of seeds produced by an adult (mean number of seeds per adult). After collecting the data calculations it is determined that the mean number of seeds per adult is 11000. If we add this the transition and fertility matrix belowand evaluate the lambda and graph the population growth with the function project we have a lambda of 4.93 and after only 5 time periods the number of adults are above 250,000. Consequently the population growth rate estimeste would be incorrect and misleading.
The error is that the value in the fertility matrix should correspond to the first stage of the matrix, in this case the seedling stage. Thus the top right corner of the fertility matrix should not be the mean number of seeds per plant, but the mean number of seedlings produced by a an adult plant.
library(DiagrammeR)
Sp1matU_Fert <- rbind(
c(0.0, 0.0, 0.0),
c(0.3, 0.7, 0.0),
c(0.0, 0.25, 0.995)
) # transition matrix
Sp1matF <- rbind(
c(0.0, 0.0, 1100.0),
c(0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0)
) # fertility matrix
Sp1matA_Fert = Sp1matU_Fert+Sp1matF # TF matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")
lambda(Sp1matA_Fert)
## [1] 4.937718
# show change in population size
n
## [1] 5 5 5
pr <- project(Sp1matA_Fert, vector="n", time=5)
plot(pr) # Note that even after just 5 time periods, the number of adults is larger than 250,000 individuals
If we wish to add a seed stage than we have to include the stage in our model and matrix with a new stage the seed stage, and have an estimate of the number of seeds that germinate and become seddlings. In the case of orchids, this likely to be a difficult estimate to attain because orchids seeds are difficult to follow in nature unless either the seed packet method developped by. or some genetic fingerprinting method was used to determine the provenance of the seeds.
library(DiagrammeR)
Sp1matU_Fert2 <- rbind(
c(0.0, 0.0, 0.0, 0.0),
c(0.0001, 0.0, 0.0, 0.0),
c(0.0, 0.3, 0.7, 0.0),
c(0.0, 0.0, 0.25, 0.995)
) # transition matrix
Sp1matF2 <- rbind(
c(0.0, 0.0, 0.0, 1100.0),
c(0.0, 0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0, 0.0),
c(0.0, 0.0, 0.0, 0.0)
) # fertility matrix
Sp1matA_Fert2 = Sp1matU_Fert2+Sp1matF2 # TF matrix
library(Rage)
stages <- c("semillas", "plantula", "juvenil", "adulto")
plot_life_cycle(Sp1matA_Fert2, stages=stages)
lambda(Sp1matA_Fert2)
## [1] 1.019805
# show change in population size
pr <- project(Sp1matA_Fert2, vector="n", time=5)
plot(pr) # Note that now the number of adults did not increase to the level of the previous model
In the above example we have not included a seed dormancy stage. In many plant species, seeds can be dormant for one or more years. It is not known if seeds in orchids are dormant for a long time Gale et al. (2010) except for a few species which have shown that seeds are still alive after mutliple years in the soil using tetrazolium stain test Rasmussen and Whigham (1993) and Whigham et al. (2006).
Estimates of dispersion in the survival, transition, death and fertility are matrix parameter are useful in multiple ways. The most basic approach is understanding the uncertainty in the parameter as a function of the sample size, parameters with large dispersion should be viewed with caution. The disperison parameters maybe useful for simulations and understanding the uncertainty in the population parameters such as lambda and the probability of persistence and extinction.
The parameter of survival, death, stasis and transitions are NOT normally distributed as the values range from zero to 1. No value can be smaller than zero or larger than one, including the 95% confidence intervals (bounded by 0 and 1). If the gaussian (normal) distribution it is likely that the 95% CI will be outof bound. Let us assume we wish to calculate the probability of survivorship of one stage and its 95% confidence intervals.
We surveyed 25 individuals were 20 survived
Where the proportion that died is \(\hat{p}\) and the number that died is \(n_d\) and \(n\) is the sample size
\[\hat{p}=\frac{n_d}{n}\] with a probability of death of 20%.
p=5/25
p
## [1] 0.2
The 95% CI of a proportion is calculated
\[ \hat{p}\pm Z_{0.05}*\sqrt{}(\frac{\hat{p}(1-\hat{p})}{n})\] - Z_{0.05} is the Z critical value for a 95% CI = 1.955
n=25
HCI=p+1.96*sqrt((p*(1-p))/n) #High CI
HCI
## [1] 0.3568
LCI=p-1.96*sqrt((p*(1-p))/n) #Low CI
LCI
## [1] 0.0432
An easier method is using the R function propCI form the library(interceptCI)
library(interpretCI)
result=propCI(n=25, p=0.2, alpha=0.05)
result
## $data
## # A tibble: 1 × 1
## value
## <lgl>
## 1 NA
##
## $result
## alpha n df p P se critical ME lower upper
## 1 0.05 25 24 0.2 0 0.08 1.959964 0.1567971 0.04320288 0.3567971
## CI z pvalue alternative
## 1 0.20 [95CI 0.04; 0.36] 2.5 0.01241933 two.sided
##
## $call
## propCI(n = 25, p = 0.2, alpha = 0.05)
##
## attr(,"measure")
## [1] "prop"
However how do calculate the 95% CI when there are more than 2 proportions? Because the proportion of all stages dependent on the proportion of the other stages, analisis have to consider the proportion and the 95% CI have to include all stages simultaneously. The function required is the multinomial (multi group) dirichlet function.
In the analysis we estimate the 95% confidence intervals of the transition and stasis of seedlings to seedlings (50%), juveniles (20%), adults (0%) and death (30%). Note the life cycle graph which by as usual excludes the probabilty of seedlings dying.
Dirichlet <- rbind(
c(0.5, 0.0, 0.0),
c(0.2, 0.0, 0.0),
c(0.0, 0.3, 0.7)
) # transition matrix
library(Rage)
stages <- c("plantula", "juvenil", "adulto")
plot_life_cycle(Dirichlet, stages=stages)
To evaluate the 95% CI interval simultaneously of the four transitions we use the library(MCMCpack), which is a package dedicated to performaing Markov Chain Monte Carlo simulations. We will use the function MCmultinomdirichlet. Note that the first list are the proportion as shown in the matrix for the seedling stage c(.50b,.2b,.0b,.3b) multiplied by the sample size b= 25. The second list are the Bayesian priors c(.5,.2,0.0001,.3), in this case I assumed that the sum of the priors are equal to 1. This results in a very low confidence in the prior perception of what the transiiton are. The second assumption is the priors for the transtion observed are equal, however we could have used c(1,1,0,.0001, 1), where this prior suggest an equal transition for all but seedlings growing to becoming an adult.
The concept of the prior cannot be explained throurougly here, see the following references for more in depth information.
The results in the figure show that there is lots of dispersion around the mean proportion of the statis and transition as expected because of the small sample size. To convince yourself change the value of b to a large number and see how the distibution changes
library(MCMCpack)
## Loading required package: coda
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:interpretCI':
##
## select
## The following object is masked from 'package:dplyr':
##
## select
## ##
## ## Markov Chain Monte Carlo Package (MCMCpack)
## ## Copyright (C) 2003-2023 Andrew D. Martin, Kevin M. Quinn, and Jong Hee Park
## ##
## ## Support provided by the U.S. National Science Foundation
## ## (Grants SES-0350646 and SES-0350613)
## ##
##
## Attaching package: 'MCMCpack'
## The following object is masked from 'package:raretrans':
##
## rdirichlet
b=25
L=posteriorPRIORL <- MCmultinomdirichlet(c(.50*b,.2*b,.0*b,.3*b), c(.5,.2,0.0001,.3), mc=10000)
dfL=as.data.frame(L)
t(summary(dfL))
##
## pi.1 Min. :0.1747 1st Qu.:0.4329 Median :0.4987
## pi.2 Min. :0.02538 1st Qu.:0.14363 Median :0.19434
## pi.3 Min. :0.000e+00 1st Qu.:0.000e+00 Median :0.000e+00
## pi.4 Min. :0.06582 1st Qu.:0.23412 Median :0.29359
##
## pi.1 Mean :0.4999 3rd Qu.:0.5660 Max. :0.8115
## pi.2 Mean :0.20176 3rd Qu.:0.25144 Max. :0.62739
## pi.3 Mean :4.990e-06 3rd Qu.:0.000e+00 Max. :3.449e-02
## pi.4 Mean :0.29835 3rd Qu.:0.35642 Max. :0.63712
#head(dfL)
stack_dfL=stack(dfL)
comb_dfbL= cbind(stack_dfL, T="25")
All_Data3=comb_dfbL
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.1"]="Seedling"
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.2"]="Juvenil"
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.3"]="Adult"
levels(All_Data3$ind)[levels(All_Data3$ind)=="pi.4"]="Dead"
library(ggplot2)
ggplot(data=All_Data3, aes(x=values, fill=ind, colour=ind))+
geom_density(aes(adjust=6, alpha=.5)) +
scale_y_continuous(limit=c(0, 5.5))+
scale_colour_hue(l=60)+
facet_grid(~ind)
## Warning in geom_density(aes(adjust = 6, alpha = 0.5)): Ignoring unknown
## aesthetics: adjust
NOw let us calculate the 95% CI of the transitions
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
## The following object is masked from 'package:purrr':
##
## compact
library(reshape2)
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
MEANS=ddply(All_Data3, c("ind"), summarise,
mean = round(mean(values),3), sd = round(sd(values),4),
#sem = round(sd(values)/sqrt(length(values)),6),
CI5 = quantile(values, probs = c(0.05)),
CI95 = round(quantile(values, probs = c(0.95)), 4)
)
MEANS
## ind mean sd CI5 CI95
## 1 Seedling 0.500 0.0963 0.34258981 0.6601
## 2 Juvenil 0.202 0.0777 0.08872168 0.3394
## 3 Adult 0.000 0.0004 0.00000000 0.0000
## 4 Dead 0.298 0.0884 0.16143679 0.4536
#Extract only the mean value for the transient analysis
formatrix=ddply(All_Data3, c("ind", "T"), summarise,
mean = round(mean(values),5))
#remove the dead probilities = not needed, it is calculated
fx=formatrix[formatrix$ind !="Dead",]
Confidence intervals of transtion, stasis and survivorship based on normal distribution
Dirichlet approach for estimating confidence intervals
titulo: “diferentes_componentes_de_Ciclo_de_vida”
Por: RLT, Nhora, Demetria, Anne….
La hoja de recoleccion de datos deberia estar preparada antes de ir al campo y estar sobre papel que es impermeable y escribir con lapiz. Ese ultimo punto es bien importante ya que la gran mayoria de los boligrafos son soluble en agua y si el papel se moja ud puede perder sus daos. RECUERDA que no se puede regresar en el tiempo y recoger los datos. Si Ud tiene su hoja de datos en el laboratorio y se le cae la taza cafe y fue escrito con boligrafo se puede perder los datos. No se arriega.
es importante tener la lista completa de todos los individuos en la hoja de datos, ya que esto le ayuda asegurarse durante el muestreo que no se le olvida ningun individuo. Datos olvidado no se puede recuperar
Hoja en blanco para llevarse
library(tidyverse)
library(gt)
Hoja_de_campo = tribble(
~Número_de_Ind, ~Etapa, ~Cantidad_flores_abierta, ~Cantidad_capullo, ~ Cantidad_Frutos, ~Numero_Hojas, ~Ancho_hoja_mm, ~etc,
23001,"...","...","...","...","...","...","...",
23002,"...","...","...","...","...","...","...",
23003,"...","...","...","...","...","...","...",
23004,"...","...","...","...","...","...","...",
23005,"...","...","...","...","...","...","...",
24006,"...","...","...","...","...","...","...",
24007,"...","...","...","...","...","...","...",
24008,"...","...","...","...","...","...","...",
)
Hoja_de_campo %>% gt()
| Número_de_Ind | Etapa | Cantidad_flores_abierta | Cantidad_capullo | Cantidad_Frutos | Numero_Hojas | Ancho_hoja_mm | etc |
|---|---|---|---|---|---|---|---|
| 23001 | ... | ... | ... | ... | ... | ... | ... |
| 23002 | ... | ... | ... | ... | ... | ... | ... |
| 23003 | ... | ... | ... | ... | ... | ... | ... |
| 23004 | ... | ... | ... | ... | ... | ... | ... |
| 23005 | ... | ... | ... | ... | ... | ... | ... |
| 24006 | ... | ... | ... | ... | ... | ... | ... |
| 24007 | ... | ... | ... | ... | ... | ... | ... |
| 24008 | ... | ... | ... | ... | ... | ... | ... |
Usando ejemplo de Tremblay [] y su codificación
Hoja llena al final del muestreo
library(tidyverse)
library(gt)
Hoja_llena = tribble(
~Número_de_Ind, ~Etapa, ~Cantidad_flores_abierta, ~Cantidad_capullo, ~ Cantidad_Frutos, ~Numero_Hojas, ~Ancho_hoja_mm, ~etc,
23001,"p",NA, NA,NA,NA,NA,NA,
23002,"j",NA, NA,NA,2,10,NA,
23003,"A1",5, 10,1, 5,32,NA,
23004,"Ao",0, 0,0,2,14,NA,
23005,"m",NA, NA,NA,NA,NA,NA,
24006,"p",NA, NA,NA,NA,NA,NA,
24007,"j",NA, NA,NA,1,7,NA,
24008,"p",NA, NA,NA,NA,NA,NA,
)
Hoja_llena %>% gt()
| Número_de_Ind | Etapa | Cantidad_flores_abierta | Cantidad_capullo | Cantidad_Frutos | Numero_Hojas | Ancho_hoja_mm | etc |
|---|---|---|---|---|---|---|---|
| 23001 | p | NA | NA | NA | NA | NA | NA |
| 23002 | j | NA | NA | NA | 2 | 10 | NA |
| 23003 | A1 | 5 | 10 | 1 | 5 | 32 | NA |
| 23004 | Ao | 0 | 0 | 0 | 2 | 14 | NA |
| 23005 | m | NA | NA | NA | NA | NA | NA |
| 24006 | p | NA | NA | NA | NA | NA | NA |
| 24007 | j | NA | NA | NA | 1 | 7 | NA |
| 24008 | p | NA | NA | NA | NA | NA | NA |
Nota que solamente los individuos 23003 y 23004 son adultos, uno tiene flores, capullos y frutos y el otro nada. A todos los adultos hay que llenar la informacion, no dejarlo en blanco. Para las otras etapas, no es necesario llenar la mayoria de las columnas ya que para las plantulas y muertos no PUEDEN tener esas, pero los juveniles, se puede llenar la cantidad de hojas y sus tamaño. Nota que el individuo 23005 se murio.
Esa misma estructura de recoger los dados puede ser utilizado para ponerlo en una hoja de MSExcel, Google Sheet o MacOS Numbers.
All chapters start with a first-level heading followed by your
chapter title, like the line above. There should be only one first-level
heading (#) per .Rmd file.
All chapter sections start with a second-level (##) or
higher heading followed by your section title, like the sections above
and below here. You can have as many as you want within a chapter.
The subtopic
More subdivision
Even more subdivision
Chapters and sections are numbered by default. To un-number a
heading, add a {.unnumbered} or the shorter
{-} at the end of the heading, like in this section.
Remember not to use only 1 # as this indicates a new chapter
Don’t miss Table @ref(tab:nice-table).
Cross-references make it easier for your readers to find and link to elements in your book.
There are two steps to cross-reference any heading:
Label the heading: # Hello world {#nice-label}.
Leave the label off if you like the automated heading generated
based on your heading title: for example, # Hello world =
# Hello world {#hello-world}.
To label an un-numbered heading, use:
# Hello world {-#nice-label} or
{# Hello world .unnumbered}.
Next, reference the labeled heading anywhere in the text using
\@ref(nice-label); for example, please see Chapter
@ref(intro).
Figures and tables with captions can also be
cross-referenced from elsewhere in your book using
\@ref(fig:chunk-label) and
\@ref(tab:chunk-label), respectively.
See Figure @ref(fig:nice-fig).
par(mar = c(4, 4, .1, .1))
plot(pressure, type = 'b', pch = 19)
Here is a nice figure!
Don’t miss Table @ref(tab:nice-table).
knitr::kable(
head(pressure, 10), caption = 'Here is a nice table!',
booktabs = TRUE
)
| temperature | pressure |
|---|---|
| 0 | 0.0002 |
| 20 | 0.0012 |
| 40 | 0.0060 |
| 60 | 0.0300 |
| 80 | 0.0900 |
| 100 | 0.2700 |
| 120 | 0.7500 |
| 140 | 1.8500 |
| 160 | 4.2000 |
| 180 | 8.8000 |
You can add parts to organize one or more book chapters together. Parts can be inserted at the top of an .Rmd file, before the first-level chapter heading in that same file.
Add a numbered part: # (PART) Act one {-} (followed by
# A chapter)
Add an unnumbered part: # (PART\*) Act two {-} (followed
by # A chapter)
Add an appendix as a special kind of un-numbered part:
# (APPENDIX) Other stuff {-} (followed by
# A chapter). Chapters in an appendix are prepended with
letters instead of numbers.
Footnotes are put inside the square brackets after a caret
^[]. Like this one 1.
Let’s add a second footnote. In this case we add information on the origin of matrix algebra 2
Mi tercer footnote es filosofico 3
Reference items in your bibliography file(s) using
@key.
For example, we are using the bookdown package (Xie 2023) (check
out the last code chunk in index.Rmd to see how this citation key was
added) in this sample book, which was built on top of R Markdown and
knitr (Xie 2015) (this citation was added
manually in an external file book.bib). Note that the .bib
files need to be listed in the index.Rmd with the YAML
bibliography key.
Evolutionary processes in orchids are likely to be a interaction between natural selection and genetic drift (Tremblay et al. 2005).
un articulo de Damon excepcional (Damon 2000)
The RStudio Visual Markdown Editor can also make it easier to insert citations: https://rstudio.github.io/visual-markdown-editing/#/citations
Here is an equation.
\[\begin{equation} f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k} (\#eq:binom) \end{equation}\]
You may refer to using \@ref(eq:binom), like see
Equation @ref(eq:binom).
– this is the script to make the equation connectable in the text
** that the .... are to make the text visual
Labeled theorems can be referenced in text using
\@ref(thm:tri), for example, check out this smart theorem
@ref(thm:tri).
::: {.theorem #tri} For a right triangle, if \(c\) denotes the length of the hypotenuse and \(a\) and \(b\) denote the lengths of the other two sides, we have \[a^2 + b^2 = c^2\]
A site to help create your equations \[\bar{x}=\frac{\sum x_{i}}{n}\]
https://latex.codecogs.com/eqneditor/editor.php
Ahora se enseña la formula del promedio @ref(thm:promedio)
\[\bar{x}= \frac{\sum x_{i}}{n}\]
Si quiere la ecuación en la linea usa solamente un “$” antes y despues de la formula. El promedio tiene la siguiente formula \(\bar{x}= \frac{\sum x_{i}}{n}\) y la varianza se estima tomando la diferencia entre los valores y el promedio.
Read more here https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html.
The R Markdown Cookbook provides more help on how to use custom blocks to design your own callouts: https://bookdown.org/yihui/rmarkdown-cookbook/custom-blocks.html